package besteAukera;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Vector;

public class SRBiegonkorra extends Asinkronoak {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Color kolorea;
	private Vector<Hanka> hankaBektorea = new Vector<Hanka>();
	private Vector<Hanka> sarreraBektorea = new Vector<Hanka>();
	private Hanka s1, s2, i1, i2;
/**
 *
 * Behar dituen parametroak pasata SRBiegonkorra sortzeko eraikitzailea.
 *
 * @param x1 
 * 			:SRBiegonkorraren irudiko trapezioaren ezker iskineko x
 *           koordenatua.
 * @param y1
 * 			:SRBiegonkorraren irudiko trapezioaren goiko iskineko y
 *           koordenatua.
 * @param hankaKop
 * 			:SRBiegonkorraren hanka kopurua.
 * @param sarreraKopMax
 * 			:SRBiegonkorraren sarrera hanka kopurua.
 * @param kolorea
 */
	public SRBiegonkorra(int x1, int y1, int hankaKop, int sarreraKopMax,
			Color kolorea) {
		super(x1, y1, hankaKop, sarreraKopMax, kolorea);
		// TODO Auto-generated constructor stub
		s1 = new Hanka(x - 20, y + 28, "negatiboa", "s", 0, this, "h", "ez",false);
		s2 = new Hanka(x - 20, y + 52, "negatiboa", "s", 1, this, "h", "ez",false);
		i1 = new Hanka(x + 80, y + 28, "positiboa", "i", 2, this, "h", "ez",false);
		i2 = new Hanka(x + 80, y + 52, "negatiboa", "i", 3, this, "h", "ez",false);

		lotList[0] = s1;
		lotList[1] = s2;
		lotList[2] = i1;
		lotList[3] = i2;

	}
	/**
	 * SRBiegonkorra txipa marrazten du.
	 */
	public void marraztu(Graphics g) {

		if (getAukeratua() == true) {
			kolorea = Color.GRAY;
		} else {
			kolorea = Color.black;
		}
		g.setColor(kolorea);
		// goikoa
		g.drawLine(x, y, x + 60, y);
		// beikoa
		g.drawLine(x + 60, y, x + 60, y + 80);
		// ezkerretakoa
		g.drawLine(x + 60, y + 80, x, y + 80);
		// eskubitakoa
		g.drawLine(x, y + 80, x, y);
		Font lehenetsia=g.getFont();
		Font f=new Font("name",Font.BOLD,9);
		g.setFont(f);
		g.drawString("Q", x + 50, y + 30);
		g.drawString("Q.L", x + 38, y + 55);
		g.drawString("S.L", x + 3, y + 30);
		g.drawString("R.L", x + 3, y + 55);
		g.setFont(lehenetsia);
		g.setColor(kolorea);
		s1.marraztu(g);
		s2.marraztu(g);
		i1.marraztu(g);
		i2.marraztu(g);
	}
	/**
	 * Sagua SRBiegonkorraren irudiaren barnean dagoen edo ez adierazten du.  Saguaren 
	 * koordenatuak biegonkorraren azalerakin alderatuz.
	 * 
	 * @param x
	 * 			:Saguaren posizioa x ardatzean.
	 * @param y
	 * 			:Saguaren posizioa y ardatzean.
	 * @return true sagua biegonkorraren laukizuzenaren barruan badago
	 * 		   false bestela
	 */
	public boolean barruanDago(int x, int y) {
		if ((x > this.x) && (x < (this.x + 60)) && (y > this.y)
				&& (y < (this.y + 80))) {
			return true;
		}
		return false;

	}
/**
 *  SRBiegonkorra txiparen irteerako hankei dagokien eragiketa logikoaren balioa
 * emango dio:
 * 
 * s1 s2 Q'
 * 0  0 = Q
 * 0  1 = 0
 * 1  0 = 1
 * 
 */
	@Override
	protected void funtzioLogikoa(Integer... values) {
		
		// TODO Auto-generated method stub
		lotList[2].getIrteera().setBalioa(
				s1.getSarrera().getBalioa()
						| (~(s2.getSarrera().getBalioa()) & i1.getIrteera()
								.getBalioa()));
		lotList[3].getIrteera().setBalioa(
				~(s2.getSarrera().getBalioa())
						& (s2.getSarrera().getBalioa() | i1.getIrteera()
								.getBalioa()));
	}

	@Override
	public Vector<Hanka> getHankak() {
		// TODO Auto-generated method stub
		hankaBektorea = new Vector<Hanka>();
		hankaBektorea.addElement(s1);
		hankaBektorea.addElement(s2);
		hankaBektorea.addElement(i1);
		hankaBektorea.addElement(i2);
		return hankaBektorea;
	}

	@Override
	public Vector<Hanka> getSarreraHankak() {
		// TODO Auto-generated method stub
		sarreraBektorea = new Vector<Hanka>();
		sarreraBektorea.addElement(s1);
		sarreraBektorea.addElement(s2);
		return sarreraBektorea;
	}
}
